//metodi che controllano la correttezza di un campo di un form

function checkUrl (url, controllaObbligatori, where){
    var msg = "";
    if (url.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}/;
    if (!espressione.test(url)){
        msg = "Controlla di avere scritto correttamente l'indirizzo del sito";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function checkNotEmpty (field, where){
    var msg = "";
    if (field.length == 0){
        msg = "Il campo &egrave; obbligatorio";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;    
}

function checkSitoEsistente (url, controllaObbligatori, where){
    var msg = "";
    if (url.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}/;
    if (!espressione.test(url)){
        msg = "Controlla di avere scritto correttamente l'indirizzo del sito";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = ""; //nel caso ci fosse già scritto un errore...
    //l'url è giusto: controllo se c'è già questo sito... ajax!
    annuncioEsistente(url, where);
    return true;
}

function checkMail (mail, controllaObbligatori, where) {
    var msg = "";
    if (mail.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^([_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+){0,100}$/;
    if (!espressione.test(mail)){
        msg = "Controlla di avere scritto correttamente il tuo indirizzo e-mail";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function checkUtenteEsistente (mail, controllaObbligatori, where) {
    var msg = "";
    if (mail.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^([_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+){0,100}$/;
    if (!espressione.test(mail)){
        msg = "Controlla di avere scritto correttamente il tuo indirizzo e-mail";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = "";
    
    //ajax!
    utenteEsistente(mail, where);
    return true;
}

function checkUtenteRegistrato (mail, controllaObbligatori, where) {
    var msg = "";
    if (mail.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^([_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+){0,100}$/;
    if (!espressione.test(mail)){
        msg = "Controlla di avere scritto correttamente il tuo indirizzo e-mail";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = "";
    
    //ajax!
    utenteRegistrato(mail, where);
    return true;
}


function checkPassword (password, controllaObbligatori, where){
    var msg = "";
    if (password.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    else if (!(password.length >= 8 && password.length <= 32)){
        msg = "La lunghezza della password deve essere compresa tra 8 e 32 caratteri";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function checkPasswordCoincidence (password, password2, where, controllaObbligatori){ 
    var msg = "";
    if (controllaObbligatori){
        if (password != password2){
            msg = "Le password inserite non coincidono";
            where.innerHTML = msg;
            return false;
        }
        else {
            where.innerHTML = "";
            return true;
        }
    }
    else{
        if (password == "" || password2 == "") return true;
        else {
            if (password != password2){
                msg = "Le password inserite non coincidono";
                where.innerHTML = msg;
                return false;
            }
            else {
                where.innerHTML = "";
                return true;
            }
        }
    }
}

function checkAlfanumerico (name, controllaObbligatori, where){
    var msg = "";
    if (name.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^[-'a-zA-Z0-9àèéòìù ]{1,50}$/;
    if (!espressione.test(name)){
        msg = "Il campo ammette solo caratteri alfanumerici";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function checkIndirizzoCorretto (indirizzo, controllaObbligatori, where){
    var msg = "";
    if (indirizzo.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    return true;
}

function checkIndirizzo (indirizzo, controllaObbligatori, where){
    var msg = "";
    if (indirizzo.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    indirizzoRiconosciuto(indirizzo, where);
    return true;
}

function checkAlfabetico (name, controllaObbligatori, where){
    var msg = "";
    if (name.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^[-'a-zA-Zàèéòìù ]{1,50}$/;
    if (!espressione.test(name)){
        msg = "Il campo ammette solo caratteri alfabetici";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function checkDate(data, controllaObbligatori, where){
    var msg = "";
    if (data.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-20\d\d/;
    if (!espressione.test(data)){
        msg = "Data non riconosciuta. Controlla di averla scritta nel formato gg-mm-aaaa";
        where.innerHTML = msg;
        return false;
    }
    var today = new Date();
    var date  = dateFromString(data);
    if (daysDiff(today, date) < 1){
        msg = "La data deve essere non prima di domani";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg;
    return true;
}

function dateFromString(str){
    var x = str.split("-");
    return new Date(x[2], x[1]-1, x[0]);
}

function daysDiff(date1, date2){
    var diff = date2.getTime()-date1.getTime();
    return Math.ceil(diff/(1000*60*60*24));
}

function checkBefore(chiusura, ordine, controllaObbligatori, where){
    var msg = "";
    if (controllaObbligatori){
        if (chiusura=="" || ordine=="") return false;
        var dataCh = dateFromString(chiusura);
        var dataOr = dateFromString(ordine);
        if (daysDiff(dataCh, dataOr) < 4){
            msg = "Tra la data di chiusura e quella di ordine devono passare almeno 4 giorni";
            where.innerHTML = msg;
            return false;
        }
        else {
            where.innerHTML = "";
            return true;
        }
    }
    else{
        if (chiusura == "" || ordine == "") return true;
        else {
            if (daysDiff(dataCh, dataOr) < 1){
                msg = "La data di chiusura deve precedere quella di ordine";
                where.innerHTML = msg;
                return false;
            }
            else {
                where.innerHTML = "";
                return true;
            }
        }
    }
}

function checkMoney(money, controllaObbligatori, where){
    var msg = "";
    if (money.length==0){
        if(controllaObbligatori){
            msg = "Il campo &egrave; obbligatorio";
            where.innerHTML = msg;
            return false;
        }
        where.innerHTML = msg;
        return true;
    }
    var espressione = /^((\d+(\.\d{1,2})?)|(\.\d+))\s*$/;

    if (!espressione.test(money)){
        msg = "Importo non riconosciuto. Controlla di averlo scritto nel formato corretto (ad esempio: 123.45) e senza il simbolo della valuta";
        where.innerHTML = msg;
        return false;
    }
    where.innerHTML = msg
    return true;
}

/* *******************************************************  */

function checkCreatore(el){
    document.getElementById(el).checked = "checked";
}

function showLiquidHint(hint){
    hideAllHints();
    hint.className = "selected";
}

function hideAllHints(){
    //Create Array of all p
    allP = document.getElementsByTagName("p");

    //Loop through all tags using a for loop
    for (i=0; i<allP.length; i++) {
        //Get all tags with the specified class name.
        if (allP[i].className=="selected") {

            allP[i].className = "unselected";
        }
    }
}

function showHideSpedGratis(checked){
    var div = document.getElementById("datiSpedGratis");
    if (checked){
        div.className = "visible";
    }
    else{
        div.className = "invisible";
    }
}


